﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using condortravel.operaciones.business.incidenciasOperaciones;
using condortravel.operaciones.common;
using condortravel.operaciones.business.mantenimientoOperaciones;
using condortravel.operaciones.core.DataModel;
using condortravel.operaciones.business.operaciones;
using condortravel.operaciones.core.Events;
using CondorTravelOperacionesWeb.Source;
using condortravel.operaciones.entities.Entities;
using condortravel.operaciones.error.Operaciones;
using condortravel.operaciones.common.Log;

namespace CondorTravelOperacionesWeb.Pages.Controles
{
    public partial class UCReporteIncidencias : System.Web.UI.UserControl
    {

        #region Services
        private IncidenciasServices incidenciasServices;
        public IncidenciasServices IncidenciasServices
        {
            set { incidenciasServices = value; }
        }
        private MantenimientoServices mantenimientoServices;

        public MantenimientoServices MantenimientoServices
        {

            set { mantenimientoServices = value; }
        }

        private OperacionesServices operacionesServices;

        public OperacionesServices OperacionesServices
        {
            get { return operacionesServices; }
            set { operacionesServices = value; }
        }

        #endregion
        protected void Page_Load(object sender, EventArgs e)
        {
            if(!IsPostBack)
            cargarDatosIniciales();
        }



        private void cargarDatosIniciales()
        {

            Util.LoadDropDownList(cboPais, Estaticas.getListPais(), "descripcion", "pais_ID", true, "0", "-");
            //Util.LoadDropDownList(cboCiudad, null, "descripcion", "ciudad_ID", true, "0", "-");

            //Util.LoadDropDownList(cboCliente, mantenimientoServices.getListCliente(), "descripcion", "cliente_ID", true, "0", "-");
            
            txtFechaInicio.Text = DateTime.Now.ToShortDateString();
            txtFechaTermino.Text = DateTime.Now.ToShortDateString();

         
        }


        private void generarVistaReporteIncidencias()
        {
            try
            {
                FilterIncidentesCriteria filter = obtenerCriterios();
                List<Tb_Incidencia> lista = operacionesServices.getReporteIncidencia(filter);
                gvList.DataSource = lista;
                gvList.DataBind();
                if (lista.Count == 0)
                    throw new IncidentesException.NoExisteIncidenciasException();
            }
            catch (Exception exc1)
            {
                //this.ErrorControl(null, exc1);
                LogApp.WriteLog(ELogLevel.ERROR, string.Format("{0}-{1}", exc1.Message, exc1.StackTrace));
            }

        }

        private FilterIncidentesCriteria obtenerCriterios()
        {
            FilterIncidentesCriteria criterios = new FilterIncidentesCriteria();
            criterios.Pais = (cboPais.SelectedIndex == 0 ? 0 : int.Parse(cboPais.SelectedValue));
            criterios.Ciudad = (cboCiudad.SelectedIndex == -1 ? 0 : int.Parse(cboCiudad.SelectedValue));
            criterios.FecFin = (txtFechaTermino.Text.Trim().Equals(String.Empty) ? DateTime.MinValue : DateTime.Parse(txtFechaTermino.Text));
            criterios.FecInicio = (txtFechaInicio.Text.Trim().Equals(String.Empty) ? DateTime.MinValue : DateTime.Parse(txtFechaInicio.Text));
          
            return criterios;
        }


        protected void cmdBuscar_Click(object sender, EventArgs e)
        {
            generarVistaReporteIncidencias();
        }

        protected void cboPais_SelectedIndexChanged(object sender, EventArgs e)
        {
            int pais = int.Parse(cboPais.SelectedValue);
            IList<Tb_Ciudad> ciudadLista = mantenimientoServices.getListCiudadByPais(pais);
            Util.LoadDropDownList(cboCiudad, ciudadLista, "descripcion", "ciudad_ID", true, "0", "-");
            

        }

        protected void gvList_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                Tb_Incidencia incidencia = (Tb_Incidencia)e.Row.DataItem;
                Label lblGrupoAsignacion = (Label)e.Row.FindControl("lblGrupoAsignacion");
                Label lblAgente = (Label)e.Row.FindControl("lblAgente");
                Label lblCliente = (Label)e.Row.FindControl("lblCliente");
                Label lblPais = (Label)e.Row.FindControl("lblPais");
                Label lblCiudad = (Label)e.Row.FindControl("lblCiudad");
                Label lblEstado = (Label)e.Row.FindControl("lblEstado");

                lblGrupoAsignacion.Text = incidencia.Tb_GrupoAsignacion.descripcion.ToString();
                lblAgente.Text = incidencia.Tb_Agente.ToString();
                lblCliente.Text = incidencia.Tb_Cliente.nombre.ToString() + incidencia.Tb_Cliente.apellido.ToString();
                lblPais.Text = incidencia.Tb_Pai.descripcion.ToString();
                lblCiudad.Text = incidencia.Tb_Ciudad.descripcion.ToString();
                lblEstado.Text = incidencia.Tb_Estado_Incidencia.descripcion.ToString();
            }
        }


    }
}